/*
 * @Author: PoJun
 * @Date: 2024-06-20 15:39:41
 * @LastEditors: PoJun
 * @LastEditTime: 2024-06-20 15:43:16
 * @Message: Nothing
 */
// 处理主题样式, 因为css变量是固定名称, 所以这里特殊处理
export function handleThemeStyle(theme, vm) {
  vm.defaultList.map(item => {
    switch (item.name) {
      case "Primary":
        vm.$uv.vuex(`vuex_theme.${item.key}`, theme)
        break
      case "Dark":
        vm.$uv.vuex(`vuex_theme.${item.key}`, getDarkColor(theme, 2 / 10))
        break
      case "Disabled":
        vm.$uv.vuex(`vuex_theme.${item.key}`, getLightColor(theme, 5 / 10))
        break
      case "Light":
        vm.$uv.vuex(`vuex_theme.${item.key}`, getLightColor(theme, 9 / 10))
        break
    }
  })
}

// hex颜色转rgb颜色
export function hexToRgb(str) {
  str = str.replace("#", "")
  let hexs = str.match(/../g)
  for (let i = 0; i < 3; i++) {
    hexs[i] = parseInt(hexs[i], 16)
  }
  return hexs
}

// rgb颜色转Hex颜色
export function rgbToHex(r, g, b) {
  let hexs = [r.toString(16), g.toString(16), b.toString(16)]
  for (let i = 0; i < 3; i++) {
    if (hexs[i].length == 1) {
      hexs[i] = `0${hexs[i]}`
    }
  }
  return `#${hexs.join("")}`
}

// 变浅颜色值
export function getLightColor(color, level) {
  let rgb = hexToRgb(color)
  for (let i = 0; i < 3; i++) {
    rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i])
  }
  return rgbToHex(rgb[0], rgb[1], rgb[2])
}

// 变深颜色值
export function getDarkColor(color, level) {
  let rgb = hexToRgb(color)
  for (let i = 0; i < 3; i++) {
    rgb[i] = Math.floor(rgb[i] * (1 - level))
  }
  return rgbToHex(rgb[0], rgb[1], rgb[2])
}
